// Components
import Taro from "@tarojs/taro";

// Utils
import { isEmpty } from "lodash";
import qs from "qs";

/**
 * 路由跳转，默认跳转类型为navigateTo，可直接跳转至tabBar页（switchTab自动替换补全）
 * @param {String | Object} options 路由地址或跳转参数
 * @param {String} options.url 路由地址，可跳转web-view
 * @param {String} options.linkType 跳转类型
 */
export function onLink(options = {}) {
  if (isEmpty(options)) {
    return;
  }

  if (typeof options === "string") {
    const url = options;
    options = { url };
  }

  options = { url: "", linkType: "navigateTo", ...options };
  const { url, linkType, params = {} } = options;
  let fullUrl = url;

  if (!isEmpty(params)) {
    fullUrl = `${url}?${qs.stringify(params)}`;
  }

  // if (fullUrl.startsWith("https://")) {
  //   fullUrl = `/packageA/pages/web-view/index?src=${fullUrl}`;
  // }

  Taro[linkType]({ url: fullUrl });
}

/**
 * 返回上页，若页面栈只有一个，则默认返回首页
 * @param {String} url 页面栈只有一个时，返回的页面
 */
export function onBack(url = "/pages/index/index") {
  const routes = Taro.getCurrentPages();

  if (routes.length > 1) {
    Taro.navigateBack();
    return;
  }

  onLink({ url, linkType: "redirectTo" });
}

/**
 * 获取当前页面路径，currentRoute()
 * @returns {String} 当前页面路径
 */
export const currentRoute = () => {
  const pages = Taro.getCurrentPages();
  // 某些特殊情况下(比如页面进行redirectTo时的一些时机)，pages可能为空数组
  return `/${pages[pages.length - 1]?.route ?? ""}`;
};
